基础知识简介

一个 MP3 音乐播放器涉及的知识,除了MP3 格式及其解码还包括 SD 卡驱动,文件系统,GUI 界面的制作、中文显示等知识,SD 卡驱动和文件系统。

最简化的 MP3 的工作原理我们可以概括如下:

首先将 MP3 歌曲文件从内存中取出并读取存储器上的信号
–> 到解码芯片对信号进行解码
–>通过数模转换器将解出来的数字信号转换成模拟信号
–>再把转换后的模拟音频放大
–>输出到耳机输出口或喇叭。

MP3 格式

MP3 是一个比较复杂的压缩标准,但是使用 MP3 标准对音频数据编码既可以获得比较大的音乐数据压缩比,又可以得到比较好的音乐回放质量。要学习 MP3 这种压缩标志,需要比较好的理论基础。其中一个就是人耳的心理声学模型,这是利用人类的听觉感知系统对某些失真不敏感的特性,这不难理解,正如数码管动态显示中就是利用了人眼对较高的闪烁频率不能识别而做成的,视频上我们完全没有必要也不可能将屏幕的刷新频率调到无限高,所以音频上我们也可以将人耳不敏感的音频信息去掉,达到压缩音频的目的。

音频压缩的时候,先将连续变化的音频模拟信号进行抽样、量化和编码产生 PCM 信号,然后以 1152 个 PCM 采样值为单位,封装成具有固定长度的 MP3 数据帧,帧是 MP3文件的最小组成单位。一个 MP3 数据帧分为 5 个部分:帧头、CRC 校验值、边信息、主数据、附加数据。

数据流的同步以及帧头信息的读取 MP3 数据流的同步以帧为单位,每一帧的帧头都包含同步信息。这个同步信息是连续的 12 比特的‘1’组成。MP3 音频解码过程中的第一步就是使解码器与输入数据流同步。在启动解码器后,可以通过搜索数据流中的12 比特长的同步字来完成。在取得同步以后跟着的数据就是帧头信息,包括采样率、填充位、比特率等信息。这些知识对之后 MP3 软件解码的理解比较重要。

软件解码和硬件解码

硬件解码:这种解码方式依赖于硬件,在之前的 V3 开发板上面有 VS1003-MP3/WMA 音频解码器,只需将 MP3 文件中的数据读取出来传送到解码芯片中,直接操作解码芯片就可以输出声音。

软件解码:在 ISO 开发板上移除了解码芯片,MP3 文件的数据读取出来还要进行一定的处理才可以输出声音,这处理过程就是软件解码。相比硬件解码,软件解码的缺点就是涉及大量复杂运算,而且占用资源比较多。

MP3 软件解码